package org.socialgr.impl.domain;


import java.util.*;
public class Conjunto{
	
	private HashSet<Object> values;
	
	public Conjunto(Object[] values2){
		this.values = new HashSet<Object>();
		try{
		for (int i = 0; i < values2.length; i++) {
		/*	{
				if(values.size()!=0)
					for (int j = 0; j < values.size(); j++) {
						if(!values.equals(values2[i])*/
							this.values.add(values2[i]);
					/*}
				else{
					this.values.add(values2[i]);
				}
			}	*/
			}
		}
		catch (Exception e){
			e.printStackTrace();
			
		}
	}
	
	public HashSet<Object>  getCollection(){
		return values;
	}
	public static Conjunto interseccion(Conjunto a, Conjunto b){
		HashSet<Object> res = new HashSet<Object>();
		HashSet<Object>  resA = a.getCollection();
		HashSet<Object>  resb = b.getCollection();
	    res.addAll(resA);
	    res.addAll(resb);
	    return new Conjunto((AbstractString[])res.toArray());
	}
	
	/*public static Conjunto union(Conjunto a, Conjunto b){
		HashSet<Object> res = new HashSet<Object>();
		HashSet<Object> resA = a.getCollection();
		HashSet<Object> resb = b.getCollection();
	    res.addAll(resA);
	    res.addAll(resb);
	    return new Conjunto(res.toArray());
	}
	
	public static Conjunto diferencia(Conjunto a, Conjunto b){
		HashSet<Object> res = new HashSet<Object>();
		HashSet<Object> resA = a.getCollection();
		HashSet<Object> resb = b.getCollection();
	    res.addAll(resA);
	    res.removeAll(resb);
	    return new Conjunto(res.toArray());
	}
	*/
	
	/*
    private HashSet<Object> a;
    
    public Conjunto(List<Object> values){
    	this.a = new HashSet<Object>();
    	for(Object o:values)
    		this.a.add(o);
    }
    public void insertar(Object e){
    	this.a.add(e);
    }
    //METODOS GENERALES
    public Set getSet(){
    	return a;
    }
    public static Conjunto union(Conjunto a, Conjunto b) {
    	Set res = new TreeSet(a.getSet());
        res.addAll(b.getSet());
        return new Conjunto(res);
    }
    
    public static Conjunto interseccion(Conjunto a, Conjunto b) {
        Set res = new TreeSet(a.getSet());
        res.retainAll(b.getSet());
        return new Conjunto(res);
    }
    
    public static Conjunto diferencia(Conjunto a, Conjunto b) {
        Set res = new TreeSet(a.getSet());
        res.removeAll(b.getSet());
        return new Conjunto(res);
    }
    
    public static Conjunto diferenciaSimetrica(Conjunto a, Conjunto b) {
        Conjunto res = diferencia(a,b);
        Conjunto bmenosa = diferencia(b,a);
        return union(res,bmenosa);
    }

    //METODOS GENERICOS
    public static <T> Set<T> unionGen(Set<T> a, Set<T> b) {
        Set<T> res = new TreeSet<>(a);
        res.addAll(b);
        return res;
    }
    
    public static <T> Set<T> interseccionGen(Set<T> a, Set<T> b) {
        Set<T> res = new TreeSet<>(a);
        res.retainAll(b);
        return res;
    }
    
    public static <T> Set<T> diferenciaGen(Set<T> a, Set<T> b) {
        Set<T> res = new TreeSet<>(a);
        res.removeAll(b);
        return res;
    }
    */
    /*public static <T> Set<T> diferenciaSimetricaGen(Set<T> a, Set<T> b) {
        Set res = diferenciaGen(a,b);
        Set bmenosa = diferenciaGen(b,a);
        res.addAll(bmenosa);
        return res;
    }*/
}